/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.hamacekj.dotaznikserver;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;

/**
 * Stavová lišta s jednoduchými zprávami. Umí zobrazit stálý text natrvalo, nebo
 * jako upozornění na omezený čas.
 * @author Jan Hamáček
 */
public class StatusBar extends JPanel {

    public StatusBar() {
        this.setLayout(new GridBagLayout());
        label.setText(" ");
        GridBagConstraints c = new GridBagConstraints();
        c.weightx = 1; c.fill = GridBagConstraints.HORIZONTAL;
        c.insets = new Insets(0, 10, 0, 10);
        this.add(label, c);
        timer = new Timer(8000, new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                label.setText(" ");
            }
        });
    }
    
    /**
     * Zobrazí text na omezený čas.
     * @param message Zpráva k zobrazení.
     */
    public void flash(String message){
        flash(message, 8000);
    }
    
    /**
     * Zobrazí text na omezený čas.
     * @param message Zpráva k zobrazení.
     * @param time Doba, po kterou bude zpráva zobrazená (v milisekundách).
     */
    public void flash(String message, int time){
        timer.stop();
        timer.setDelay(time);
        label.setText(message);
        timer.start();
    }
    
    /**
     * Nastaví trvalý text v {@link StatusBar statusbaru}.
     * Text bude zobrazen, dokud nebude vyměněn pomocí
     * {@link #flash(java.lang.String) flash}{@link #setText(java.lang.String) setText}
     * , nebo {@link #clear() clear}.
     * @param text text k zobrazení.
     */
    public void setText(String text){
        timer.stop();
        label.setText(text);
    }
    
    /**
     * Smaže obsah stavové lišty.
     */
    public void clear(){
        timer.stop();
        label.setText(" ");
    }
    
    private JLabel label = new JLabel();
    private Timer timer = null;
}
